level bar: Fix offset behavior
authorMatthias Clasen <mclasen@redhat.com>
Sat, 6 Feb 2016 15:42:25 +0000 (16:42 +0100)
committerMatthias Clasen <mclasen@redhat.com>
Sat, 6 Feb 2016 15:43:45 +0000 (16:43 +0100)
We had some odd special-casing for the lowest and highest offset
that did not quite work. The new rule is simple: If the value
is between offset n-1 and n, it gets the style for offset n.

https://bugzilla.gnome.org/show_bug.cgi?id=761416

gtk/gtklevelbar.c

index 6cffd980c93990a52935247a4124de2537bb4c4b..aed59201b411470cb758b6e654533e09c4dc823f 100644 (file)
@@ -652,16 +652,18 @@ update_level_style_classes (GtkLevelBar *self)
       offset = l->data;
 
       /* find the right offset for our style class */
-      if ((l->prev == NULL && value <= offset->value) ||
-          (l->next == NULL && value >= offset->value))
+      if (value <= offset->value)
         {
-          value_class = offset->name;
-        }
-      else if (l->prev != NULL)
-        {
-          prev_offset = l->prev->data;
-          if (prev_offset->value <= value && value < offset->value)
-            value_class = offset->name;
+          if (l->prev == NULL)
+            {
+              value_class = offset->name;
+            }
+          else
+            {
+              prev_offset = l->prev->data;
+              if (prev_offset->value < value)
+                value_class = offset->name;
+            }
         }
 
       if (value_class)